From c2735f98b45253d0a33cb1ced0e51aa0f2c3d224 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 17 Jun 2023 22:00:04 -0400 Subject: [PATCH] testsuite: Add some more a11y tests Test that overriding roles works, both via g_object_new, and via ui files. --- testsuite/a11y/entry.c | 1 + testsuite/a11y/meson.build | 1 + testsuite/a11y/togglebutton.c | 91 +++++++++++++++++++++++++++++++++++ 3 files changed, 93 insertions(+) create mode 100644 testsuite/a11y/togglebutton.c diff --git a/testsuite/a11y/entry.c b/testsuite/a11y/entry.c index 67cfdcca55..7e2fbd835b 100644 --- a/testsuite/a11y/entry.c +++ b/testsuite/a11y/entry.c @@ -25,6 +25,7 @@ entry_properties (void) gtk_test_accessible_assert_property (widget, GTK_ACCESSIBLE_PROPERTY_PLACEHOLDER, "Hello"); gtk_test_accessible_assert_property (widget, GTK_ACCESSIBLE_PROPERTY_READ_ONLY, TRUE); + gtk_test_accessible_assert_property (widget, GTK_ACCESSIBLE_PROPERTY_HAS_POPUP, TRUE); g_object_unref (widget); } diff --git a/testsuite/a11y/meson.build b/testsuite/a11y/meson.build index 9129731f36..b3baa13b40 100644 --- a/testsuite/a11y/meson.build +++ b/testsuite/a11y/meson.build @@ -28,6 +28,7 @@ tests = [ { 'name': 'stack' }, { 'name': 'switch' }, { 'name': 'textview' }, + { 'name': 'togglebutton' }, { 'name': 'window' }, ] diff --git a/testsuite/a11y/togglebutton.c b/testsuite/a11y/togglebutton.c new file mode 100644 index 0000000000..f4275bd0d1 --- /dev/null +++ b/testsuite/a11y/togglebutton.c @@ -0,0 +1,91 @@ +#include + +static void +toggle_button_role (void) +{ + GtkWidget *button = gtk_toggle_button_new (); + g_object_ref_sink (button); + + gtk_test_accessible_assert_role (button, GTK_ACCESSIBLE_ROLE_TOGGLE_BUTTON); + + /* Simple command buttons have a "pressed" state set to "undefined" */ + gtk_test_accessible_assert_state (button, GTK_ACCESSIBLE_STATE_PRESSED, GTK_ACCESSIBLE_VALUE_UNDEFINED); + + g_object_unref (button); +} + +static void +toggle_button_label (void) +{ + GtkWidget *button = gtk_toggle_button_new_with_label ("Hello"); + g_object_ref_sink (button); + + gtk_test_accessible_assert_relation (GTK_ACCESSIBLE (button), + GTK_ACCESSIBLE_RELATION_LABELLED_BY, gtk_widget_get_first_child (button), NULL); + + g_object_unref (button); +} + +/* Check that we set up a labelled_by relationship between a button + * and its label. + */ +static void +toggle_button_relation (void) +{ + GtkWidget *button = gtk_toggle_button_new_with_mnemonic ("_Hello"); + + g_object_ref_sink (button); + + gtk_test_accessible_assert_relation (GTK_ACCESSIBLE (button), + GTK_ACCESSIBLE_RELATION_LABELLED_BY, gtk_widget_get_first_child (button), NULL); + + g_object_unref (button); +} + +static void +toggle_button_generic (void) +{ + GtkBuilder *builder; + GtkWidget *button; + GError *error = NULL; + + button = g_object_new (GTK_TYPE_TOGGLE_BUTTON, + "accessible-role", GTK_ACCESSIBLE_ROLE_GENERIC, + NULL); + + g_object_ref_sink (button); + + gtk_test_accessible_assert_role (button, GTK_ACCESSIBLE_ROLE_GENERIC); + + g_object_unref (button); + + builder = gtk_builder_new (); + + gtk_builder_add_from_string (builder, + "" + " " + " generic" + " " + "", + -1, &error); + g_assert_no_error (error); + + button = GTK_WIDGET (gtk_builder_get_object (builder, "togglebutton")); + + gtk_test_accessible_assert_role (button, GTK_ACCESSIBLE_ROLE_GENERIC); + + g_object_unref (builder); +} + +int +main (int argc, char *argv[]) +{ + gtk_test_init (&argc, &argv, NULL); + + g_test_add_func ("/a11y/togglebutton/role", toggle_button_role); + g_test_add_func ("/a11y/togglebutton/label", toggle_button_label); + g_test_add_func ("/a11y/togglebutton/relation", toggle_button_relation); + g_test_add_func ("/a11y/togglebutton/generic", toggle_button_generic); + + return g_test_run (); +} -- 2.30.2